package front.end.subestacao.xml.factory;

import java.util.ArrayList;
import java.util.List;

import front.end.subestacao.rede.TipoColor;
import front.end.subestacao.rede.TipoColor.TIPO_FICHA;
import front.end.subestacao.xml.reader.DeclaracoesReader;


public class TipoFichaFactory {

	private static final String WITH = "with";
	private static final String PRODUCT = "product";

	public List<TipoColor> lerTipoColors() {

		ArrayList<TipoColor> lstTipoColors = new ArrayList<TipoColor>();
		
		DeclaracoesReader declaracoesReader = new DeclaracoesReader();

		String strLinhasColors = declaracoesReader.getStrLinhasColors();

		parseEmColors(strLinhasColors, lstTipoColors);

		return lstTipoColors;
	}

	private void parseEmColors(String strLinhasColors, List<TipoColor> lstColors) {

		String[] linhas = strLinhasColors.split(";");
		for (int i = 0; i < linhas.length; i++) {
			String linha = linhas[i];
			if (!linhas[i].equals("")) {
				if (linha.contains(WITH)) {
					String[] lados = linha.split(WITH);
					
					String[] valores = lados[1].trim().split("\\|");
					lstColors.add(getTipoColor(lados[0].trim(), valores,
							TIPO_FICHA.WITH.ordinal(), linha));
				} else if (linha.contains(PRODUCT)) {
					String[] lados = linha.split(PRODUCT);
					
					String[] valores = lados[1].trim().split("\\*");
					lstColors.add(getTipoColor(lados[0].trim(), valores,
							TIPO_FICHA.PRODUCT.ordinal(), linha));
				}
			}

		}

	}

	private TipoColor getTipoColor(String ladoA, String[] valores, int tipo,
			String linha) {
		int indInicial = ladoA.indexOf("r") + 1;// ultima letra da palavra color
		int indFinal = ladoA.indexOf("=");
		String nome = ladoA.substring(indInicial, indFinal).trim();

		List<String> lstValores = new ArrayList<String>();

		for (int i = 0; i < valores.length; i++) {
			lstValores.add(valores[i].trim());
		}

		return new TipoColor(nome, tipo, lstValores, linha);
	}

	

}
